#include <iostream>
using namespace std;

struct Node {
    int id;
    string name;
    int password;
    Node* next;
    Node(int i, string n, int p) : id(i), name(n), password(p), next(nullptr) {}
};

int main() {
    int n, m;
    cin >> n;
    cin.ignore();  // 清除输入缓冲区

    Node* head = nullptr;
    Node* tail = nullptr;

    // 构建循环链表
    for (int i = 0; i < n; i++) {
        string line;
        getline(cin, line);
        int id, p;
        string name;
        sscanf(line.c_str(), "%d, %[^,], %d", &id, &name[0], &p);  // 直接解析输入

        Node* newNode = new Node(id, name, p);
        if (!head) {
            head = tail = newNode;
        } else {
            tail->next = newNode;
            tail = newNode;
        }
    }
    tail->next = head;  // 形成环

    cin >> m;  // 初始步数
    Node* curr = tail;  // 从尾部开始，下一步就是头节点

    while (n--) {
        // 移动 m-1 步（因为从下一个人开始数）
        for (int i = 0; i < m - 1; i++) {
            curr = curr->next;
        }

        Node* del = curr->next;
        cout << del->id << ", " << del->name << ", " << del->password << endl;

        m = del->password;  // 更新步数为出列者的密码
        curr->next = del->next;  // 跳过被删除节点
        delete del;  // 释放内存
    }

    return 0;
}